---
title: "Prometheus-мониторинг"
type:
  - instruction
search: prometheus
webIfaces:
- name: grafana
---

Устанавливает и полностью настраивает [Prometheus](https://prometheus.io/), настраивает сбор метрик со многих распространенных приложений, а также предоставляет необходимый минимальный набор alert'ов для Prometheus и dashboard Grafana.

Если используется StorageClass с поддержкой автоматического расширения (`allowVolumeExpansion: true`), при нехватке места на диске для данных Prometheus его емкость будет увеличена.

Ресурсы CPU и memory автоматически выставляются при пересоздании пода на основе истории потребления, благодаря модулю [Vertical Pod Autoscaler](../../modules/302-vertical-pod-autoscaler/). Также, благодаря кэшированию запросов к Prometheus с помощью [Trickster](https://github.com/trickstercache/trickster), потребление памяти Prometheus сильно сокращается.

Поддерживается как pull-, так и push-модель получения метрик.

## Мониторинг аппаратных ресурсов

Реализовано отслеживание нагрузки на аппаратные ресурсы кластера с графиками по утилизации:
- процессора;
- памяти;
- диска;
- сети.

Графики доступны с агрегацией в разрезе:
- по подам;
- контроллерам;
- пространствам имен;
- узлам.

## Мониторинг Kubernetes

Deckhouse настраивает мониторинг широкого набора параметров «здоровья» Kubernetes и его компонентов, в частности:
- общей утилизации кластера;
- связанности узлов Kubernetes между собой (измеряется rtt между всеми узлами);
- доступности и работоспособности компонентов control plane:
  - `etcd`;
  - `coredns` и `kube-dns`;
  - `kube-apiserver` и др.
- синхронизации времени на узлах и др.

## Мониторинг Ingress

Подробно описан [здесь](../../modules/402-ingress-nginx/#мониторинг-и-статистика)

## Режим расширенного мониторинга

В Deckhouse возможно использование [режима расширенного мониторинга](../340-extended-monitoring/), который предоставляет возможности алертов по дополнительным метрикам: свободному месту и inode на дисках узлов, утилизации узлов, доступности подов и образов контейнеров, истечении действия сертификатов, другим событиям кластера.

### Алертинг в режиме расширенного мониторинга

Deckhouse позволяет гибко настроить алертинг на каждый из namespace'ов и указывать разную критичность в зависимости от порогового значения. Есть возможность указать множество пороговых значений отправки алертов в различные namespace'ы, например, для таких параметров, как:
- значения свободного места и inodes на диске;
- утилизация CPU узлов и контейнера;
- процент 5xx ошибок на `nginx-ingress`;
- количество возможных недоступных подов в `Deployment`, `StatefulSet`, `DaemonSet`.

## Алерты

Мониторинг в составе Deckhouse включает также и возможности уведомления о событиях. В стандартной поставке уже идет большой набор только необходимых алертов, покрывающих состояние кластера и его компонентов. При этом всегда остается возможность добавления кастомных алертов.

### Отправка алертов во внешние системы

Deckhouse поддерживает отправку алертов с помощью `Alertmanager`:
- по протоколу SMTP;
- в PagerDuty;
- в Slack;
- в Telegram;
- посредством Webhook;
- по любым другим каналам, поддерживаемым в Alertmanager.

## Включенные модули

![Схема взаимодействия](../../images/300-prometheus/prometheus_monitoring_new.svg)

### Компоненты, устанавливаемые Deckhouse

| Компонент                   | Описание                                                                                                                                                                                                                                                                                        |
|-----------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **prometheus-main**         | Основной Prometheus, который выполняет scrape каждые 30 секунд (с помощью параметра `scrapeInterval` можно изменить это значение). Именно он обрабатывает все правила, отправляет алерты и является основным источником данных.                                                                 |
| **prometheus-longterm**     | Дополнительный Prometheus, который выполняет scrape данных из основного Prometheus (`prometheus-main`) каждые 5 минут (с помощью параметра `longtermScrapeInterval` можно изменить это значение). Используется для продолжительного хранения истории и отображения больших промежутков времени. |
| **trickster**               | Кэширующий прокси, снижающий нагрузку на Prometheus.                                                                                                                                                                                                                                            |
| **aggregating-proxy**       | Аггрегирующий и кеширующий прокси, снижающий нагрузку на Prometheus и объединяющий main и longterm в один источник.                                                                                                                                                                             |
| **memcached**               | Сервис кэширования данных в оперативной памяти.                                                                                                                                                                                                                                                 |
| **grafana**                 | Управляемая платформа визуализации данных. Включает подготовленные dashboard'ы для всех модулей Deckhouse и некоторых популярных приложений. Grafana умеет работать в режиме высокой доступности, не хранит состояние и настраивается с помощью CRD.                                            |
| **metrics-adapter**         | Компонент, соединяющий Prometheus и Kubernetes metrics API. Включает поддержку HPA в кластере Kubernetes.                                                                                                                                                                                       |
| **vertical-pod-autoscaler** | Компонент, позволяющий автоматически изменять размер запрошенных ресурсов для подов с целью оптимальной утилизации CPU и памяти.                                                                                                                                                                |
| **Различные exporter'ы**    | Подготовленные и подключенные к Prometheus exporter'ы. Список включает множество exporter'ов для всех необходимых метрик: `kube-state-metrics`, `node-exporter`, `oomkill-exporter`, `image-availability-exporter` и многие другие.                                                             |

### Внешние компоненты

Deckhouse может интегрироваться с большим количеством разнообразных решений следующими способами:

| Название                       | Описание|
|--------------------------------|--------------------------------------------------------------------------|
| **Alertmanagers**              | Alertmanager'ы могут быть подключены к Prometheus и Grafana и находиться как в кластере Deckhouse, так и за его пределами.|
| **Long-term metrics storages** | Используя протокол `remote write`, возможно отсылать метрики из Deckhouse в большое количество хранилищ, включающее [Cortex](https://www.cortex.io/), [Thanos](https://thanos.io/), [VictoriaMetrics](https://victoriametrics.com/products/open-source/).|
